Using symbolic names for filtering process


With one of the next versions made available a user can utilize symbolic names instead of defining the position, length and format.

The following layouts are supported:


Sample using symbolic names in an +INCLUDE control statement
//FLTPRINT  DD   SYSOUT=*                           
//FLTINPUT  DD  *                                   
+OPTIONS    DUMPREC=V,HITS=ONLY                               
+INCLUDE    COND=(
ACC_EVENT_TYPE,*,*,EQ,ACCESS,AND, 
                  
ACC_RES_NAME,*,CG,EQ,IBMUSER.**,AND,  
                  
ACC_CLASS,*,*,EQ,DATASET)         
+INCLUDE    COND=(
ACC_CLASS,*,*,EQ,PROGRAM)         
//                                                  



Following rules apply:
+INCLUDE    COND=((startpos,length,format,comparison,string))

  • startpos - a symbolic name can be used instead e.g. SMF80RTY, INIT_USER_WARNING
  • length - if a „*“ is defined as length, the length of the symbolic name will be used instead
  • format - if a „*“ is defined as format, the format of the symbolic name will be used instead




All flag fields in IRRADU00 (i.e. set to YES or NO) are defined in the internal tables as ONE byte.  Hence a check for violations should look like:
+INCLUDE    COND=(INIT_VIOLATION,*,*,EQ,Y)
or
+INCLUDE    COND=(
INIT_VIOLATION,3,*,EQ,YES)
or
+INCLUDE    COND=(
INIT_VIOLATION,3,CH,EQ,YES)
* Note:  above statement will select ALL violations as long not in addition the EVENT CODE is specified in the filter statement.  All violations are found at the same position.



All symbolic names in IRRDBU00 and IRRADU00 have the format „CH“ by default in the internal tables.


For SMF record symbolic names, which are defined in the IBM DSECTS e.g. as  „SMFxxABCD DS    0C“, a zero length will internally assigned.  Such definitions will fail during the syntax checking as a length is expected from the internal table or the user defines the length explicitly.  




Sample using symbolic names in an +INCLUDE control statement for relocatable sections
+INCLUDE    COND=((0006,1,HX,EQ,50),AND,                                
                  (0023,8,CH,EQ,'XRZP001'),AND,                         
                 ((0001(0004,H38,H40,I1,0),1,HX,EQ,01),AND,             
 (1(SMF80FLG,SMF80REL,SMF80CNT,SMF80DLN,SMF80DTA),7,CH,EQ,RA2002.)),AND,
                 ((0001(0004,H38,H40,I1,0),1,HX,EQ,03),AND,             
 (1(SMF80FLG,SMF80REL,SMF80CNT,SMF80DLN,SMF80DTA),SMF80DLN,HX,EQ,10)))  


Above sample covers relocatable sections within an SMF record type 80: 
1. SMF80FLG: is a „required offset“ in conjunction with the SMF80REL and SMF80CNT.  It is the same as you define the value 4 instead.
2. SMF80REL: Offset to the first relocate section from the beginning of the record header (SMF80FLG).  It is the same as you define „H38“ instead.
3. SMF80CNT: Count of the number of relocate sections. Same offset applies as for SMF80REL.  It is the same as you define „H40“ instead.
4. SMF80DLN: Offset to the data length in the relocatable section. It is the same as you define „I1“ instead.  This field is at rel. offset 1 and has a length of 1 byte.
5. SMF80DTA: Offset to the data in the relocatable section. It is the same as you define „2“ instead.  This field is at rel. offset 2.